﻿using Common.Entitys.CommonLogs;
using Common.Utils;
using ReactiveUI.Fody.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common.ViewModels.调度
{

    /// <summary>
    /// 这里工件调度系统 发送消息给主通道。
    /// </summary>
    public class 工件调度系统:BaseViewModel
    {

        /// <summary>
        /// 这里是工件锁
        /// </summary>
        private readonly object m_Lock=new object();

        [Reactive] public List<工件> Lis工件s { get; set; } =new ();

        /// <summary>
        /// 目前有的机械手数量
        /// </summary>
        [Reactive] public int 当前运力 {  get; set; }

        /// <summary>
        /// 需要的机械手数量
        /// </summary>
        [Reactive] public int 当前所需运力 { get; set; }


        /// <summary>
        /// 开始工作
        /// </summary>
        public void StartWork() 
        {
            try
            {
                工件[] 待处理工件=null;
                lock (m_Lock)
                {
                    待处理工件 =  Lis工件s.ToArray();
                }

                //待处理工件
                for (int i = 0; i < 待处理工件.Length; i++)
                {
                    工件 当前工件= 待处理工件[i];
                    if (当前工件.StationWorkInfo == null)
                    {
                        continue;
                    }

                    //if(当前工件.StationWorkInfo.)

                    //if(当前工件.StationWorkInfo.)
                }
               


            }
            catch (Exception e)
            {
                LogHelp.AddLog<ErrorLogEntity>($"主程序调度系统异常 {e.Message}");
            }
        }

        public void 新增工件(工件 gj)
        {
            lock (m_Lock)
            {
                this.Lis工件s.Add(gj);
            }
        }

        public void 移除工件(工件 gj)
        {
            lock(m_Lock)
            {
                this.Lis工件s.Remove(gj);
            }
        }

    }
}
